package main

import (
	"fmt"

	"github.com/pkg/errors"
)

var errExample = errors.New("example error")

func main() {
	// WithMessage 包装了一层， Wrap 函数包装两层，先包装为 withMessage 后包装成
	errNewExample := errors.WithMessage(errExample, "new example error")

	fmt.Println(errors.Is(errNewExample, errExample))

	fmt.Println("---")

	fmt.Println(errNewExample)
	fmt.Println(errors.Unwrap(errNewExample))

	fmt.Println("---")

	fmt.Println(errExample)
	fmt.Println(errors.As(errNewExample, &errExample))
	fmt.Println(errExample)
}

// output:
// true
// ---
// new example error: example error
// example error
// ---
// example error
// true
// new example error: example error
